home *** CD-ROM | disk | FTP | other *** search
/ Freelog Special Freeware 31 / FreelogHS31.iso / ArgentCompta / FASTCAISSE / Setup FASTCAISSE.exe / {app} / CHANGE LG DESI.sql < prev    next >
Text File  |  2007-01-27  |  14KB  |  444 lines

  1. DROP PROCEDURE "GET_PURGE";
  2. DROP PROCEDURE "INTERROGATION_PONTA";
  3. DROP PROCEDURE "INTERROGATION_PONTV";
  4. DROP PROCEDURE "GET_DESIGNATION";
  5. ALTER TABLE DESIGNATIONS ALTER TEXTE TYPE VARCHAR(60);
  6.  
  7. CREATE PROCEDURE "GET_PURGE"
  8. (
  9.   "TYPEPURGE" SMALLINT,
  10.   "RCH_TEMP" SMALLINT
  11. )
  12. RETURNS
  13. (
  14.   "INDXOUT" INTEGER,
  15.   "DESI" VARCHAR(60)
  16. )
  17. AS
  18. BEGIN
  19. IF (TYPEPURGE=1) THEN
  20. FOR SELECT INDX,NOM||' '||PRENOM  FROM CLIENTS WHERE TEMP=:RCH_TEMP ORDER BY NOM INTO :INDXOUT,:DESI DO SUSPEND;
  21. ELSE IF (TYPEPURGE=2) THEN
  22. FOR SELECT INDX,NOM||' '||PRENOM  FROM FOURNISSEURS WHERE TEMP=:RCH_TEMP ORDER BY NOM INTO :INDXOUT,:DESI DO SUSPEND;
  23. ELSE IF (TYPEPURGE=3) THEN
  24. FOR SELECT INDX,D.TEXTE FROM ARTICLES A LEFT JOIN DESIGNATIONS D ON D.INDXART=A.INDX AND CODELANGUE=1 WHERE TEMP=:RCH_TEMP ORDER BY 2 INTO :INDXOUT,:DESI DO SUSPEND;
  25. END
  26.  ;
  27.  
  28. CREATE PROCEDURE "GET_DESIGNATION"
  29. (
  30.   "INDX" INTEGER,
  31.   "CODELANGUE" SMALLINT
  32. )
  33. RETURNS
  34. (
  35.   "TEXTE" VARCHAR(60),
  36.   "RCODE" SMALLINT
  37. )
  38. AS
  39. DECLARE VARIABLE V1 SMALLINT;
  40. BEGIN
  41. RCODE = :CODELANGUE;
  42. SELECT COUNT(*) FROM DESIGNATIONS D WHERE D.INDXART=:INDX AND D.CODELANGUE=:RCODE INTO V1;
  43. IF (V1 = 0) THEN
  44.   BEGIN
  45.   RCODE = 1;
  46.   SELECT COUNT(*) FROM DESIGNATIONS D WHERE D.INDXART=:INDX AND D.CODELANGUE=1 INTO V1;
  47.   END
  48. SELECT TEXTE FROM DESIGNATIONS D WHERE D.INDXART=:INDX AND D.CODELANGUE=:RCODE INTO :TEXTE;
  49. SUSPEND;
  50. END
  51.  ;
  52.  
  53. CREATE PROCEDURE "INTERROGATION_PONTA"
  54. (
  55.   "DATEDEB" DATE,
  56.   "DATEFIN" DATE,
  57.   "DETAIL_VERSEMENTS" SMALLINT,
  58.   "DETAIL_TVA" SMALLINT,
  59.   "DETAIL_TVA_PORT" SMALLINT,
  60.   "DETAIL_HT" SMALLINT
  61. )
  62. RETURNS
  63. (
  64.   "DATEPIECE" TIMESTAMP,
  65.   "NOPIECE" VARCHAR(15),
  66.   "NOLIGNE" SMALLINT,
  67.   "INFO1" VARCHAR(15),
  68.   "INFO2" VARCHAR(15),
  69.   "LIBELLE" VARCHAR(85),
  70.   "DEBIT" DECIMAL(12, 2),
  71.   "CREDIT" DECIMAL(12, 2),
  72.   "ESTPAYE" CHAR(1),
  73.   "ESTESP" CHAR(1),
  74.   "INDX" INTEGER,
  75.   "BLOBLIGNE" BLOB SUB_TYPE 1 SEGMENT SIZE 80
  76. )
  77. AS
  78. DECLARE VARIABLE TTC DECIMAL(12,2);
  79. DECLARE VARIABLE M1 DECIMAL(15,2);
  80. DECLARE VARIABLE TVA DECIMAL(12,2);
  81. DECLARE VARIABLE HT DECIMAL(12,2);
  82. DECLARE VARIABLE NOTIERS INTEGER;
  83. DECLARE VARIABLE ST VARCHAR(200);
  84. DECLARE VARIABLE TYPEPIECE VARCHAR(35);
  85. DECLARE VARIABLE TYPEVERS VARCHAR(35);
  86. DECLARE VARIABLE TAUX DECIMAL(6,2);
  87. DECLARE VARIABLE TAUXTVA INTEGER;
  88. DECLARE VARIABLE TVAPORT INTEGER;
  89. DECLARE VARIABLE PORT DECIMAL(12,2);
  90. DECLARE VARIABLE I INTEGER;
  91. DECLARE VARIABLE REDUC DECIMAL(5,2);
  92. BEGIN
  93. FOR SELECT P.INDX,P.DATEPIECE,P.NOPIECE,P.TOTALTVA,P.TOTALTTC,P.NOTIERS,P.TVAPORT,
  94.     P.PORT,P.PCREDUC+P.PCESCOMPTE,
  95.     T.COMPTGENE,T.COMPTAUXI,C.DESIGNATION
  96.     FROM PIECES P
  97.     LEFT JOIN FOURNISSEURS T ON T.INDX=P.NOTIERS
  98.     LEFT JOIN CHAINES C on (c.TYPEC=0) AND (c.LIGNE=p.TYPEPIECE) AND (C.COLONNE=0)
  99.     WHERE P.TOTALTTC<>0 AND P.DATEPONT IS NULL AND P.DATEPIECE>=:DATEDEB
  100.     AND P.DATEPIECE<:DATEFIN AND TYPEPIECE IN (13,14)
  101.     ORDER BY P.DATEPIECE
  102.     INTO :INDX,:DATEPIECE,:NOPIECE,:TVA,:TTC,:NOTIERS,:TVAPORT,:PORT,:REDUC,
  103.     :INFO1,:INFO2,:TYPEPIECE DO
  104.   BEGIN
  105.   HT = TTC - TVA;
  106.   NOLIGNE=1;
  107.   IF (INFO1 IS NULL OR INFO1='') THEN INFO1='401000';
  108.   SELECT SUM(MONTANT) FROM VERSEMENTS WHERE INDEXPIECE=:INDX INTO :M1;
  109.   IF (TTC=M1) THEN ESTPAYE = 'O'; ELSE ESTPAYE = 'N';
  110.   SELECT SUM(MONTANT) FROM VERSEMENTS WHERE INDEXPIECE=:INDX AND TYPEV=0 INTO :M1;
  111.   IF (TTC=M1) THEN ESTESP = 'O'; ELSE ESTESP = 'N';
  112.   IF (NOTIERS>0) THEN SELECT AVALUE FROM GET_NOM_FOUR(:NOTIERS) INTO :ST;
  113.                  ELSE ST = 'N░ ' || NOPIECE;
  114.   /* LIGNE 1 (Montant TTC) */
  115.   IF (DETAIL_VERSEMENTS<>0) THEN
  116.     BEGIN
  117.     /* DΘtailler les versements */
  118.     FOR SELECT C.DESIGNATION,V.MONTANT FROM VERSEMENTS V
  119.         LEFT JOIN CHAINES C on (c.TYPEC=22) AND (c.LIGNE=V.TYPEV) AND (C.COLONNE=0)
  120.         WHERE V.INDEXPIECE=:INDX AND V.MONTANT<>0
  121.         ORDER BY V.DATEV
  122.         INTO :TYPEVERS,:M1 DO
  123.       BEGIN
  124.       TTC = TTC-M1;
  125.       CREDIT=NULL;
  126.       DEBIT=NULL;
  127.       IF (M1<0) THEN DEBIT=-M1; ELSE CREDIT=M1;
  128.       LIBELLE = TYPEVERS || ' ' || TYPEPIECE || ' ' || ST;
  129.       SUSPEND;
  130.       END
  131.     END
  132.   CREDIT=NULL;
  133.   DEBIT=NULL;
  134.   IF(TTC<>0) THEN
  135.     BEGIN
  136.     LIBELLE = TYPEPIECE || ' ' || ST;
  137.     IF (TTC<0) THEN DEBIT=-TTC; ELSE CREDIT=TTC;
  138.     SUSPEND;
  139.     END
  140.  
  141.   /*
  142.   * LIGNE 2
  143.   * (TVA)
  144.   */
  145.   NOLIGNE=2;
  146.   INFO1 = '445660';
  147.   INFO2 = '';
  148.   IF (TVA<>0) THEN
  149.     BEGIN
  150.     /* Faire d'abord le port */
  151.     IF (DETAIL_TVA_PORT=1 AND PORT<>0) THEN
  152.       BEGIN
  153.       LIBELLE = 'TVA ' || CAST(CAST(TVAPORT AS DECIMAL(6,2)) / 100 AS VARCHAR(8)) || '%';
  154.       M1 = (PORT * TVAPORT /10000);
  155.       TVA = TVA - M1;
  156.       IF (M1>0) THEN DEBIT=M1; ELSE CREDIT=-M1;
  157.       INFO2 = 'PORT';
  158.       SUSPEND;
  159.       END
  160.     /* DΘtailler TVA avec un seul taux revient α ne pas dΘtailler la TVA */
  161.     I=0;
  162.     FOR SELECT DISTINCT TVA FROM LIGNES L
  163.     WHERE INDEXPIECE=:INDX AND TVA<>0 INTO :TAUXTVA DO I=I+1;
  164.     /* Ensuite le cas simple */
  165.     IF ((DETAIL_TVA=0) or (i=1) ) THEN
  166.       BEGIN
  167.       /* Ne pas dΘtailler plusieurs taux
  168.       /* vΘrifier si un seul taux dans la piΦce
  169.       ce qui permet de faire un libellΘ prΘcis */
  170.       if (I=1) then LIBELLE = 'TVA ' || CAST(CAST(TAUXTVA AS DECIMAL(6,2)) / 100 AS VARCHAR(8)) || '%';
  171.       ELSE LIBELLE = 'TVA';
  172.       CREDIT=NULL;
  173.       DEBIT=NULL;
  174.       IF (TVA>0) THEN DEBIT=TVA; ELSE CREDIT=-TVA;
  175.       INFO2 = '';
  176.       SUSPEND;
  177.       END /* IF */
  178.     ELSE
  179.       BEGIN
  180.       /* Cas compliquΘ: Calculer ligne par ligne.... */
  181.       FOR SELECT TVA,SUM(l.PRIX*l.QUANTITE*((100-(L.REMISE+:REDUC))/100)*TVA/10000) FROM LIGNES L
  182.           WHERE INDEXPIECE=:INDX AND TVA<>0
  183.           GROUP BY TVA INTO :TAUXTVA,:M1 DO
  184.         BEGIN
  185.         CREDIT=NULL;
  186.         DEBIT=NULL;
  187.         IF (ABS(TVA-M1)<0.03) THEN M1=TVA;
  188.         LIBELLE = 'TVA ' || CAST(CAST(TAUXTVA AS DECIMAL(6,2)) / 100 AS VARCHAR(8)) || '%';
  189.         TVA = TVA - M1;
  190.         IF (M1>0) THEN DEBIT=M1; ELSE CREDIT=-M1;
  191.         INFO2 = TAUXTVA;
  192.         SUSPEND;
  193.         END
  194.         /* Le reste de la TVA */
  195.       IF (TVA<>0) THEN
  196.         /* ProblΦme d'arrondi */
  197.         BEGIN
  198.         CREDIT=NULL;
  199.         DEBIT=NULL;
  200.         LIBELLE = 'Ecart sur calcul TVA par lignes';
  201.         INFO2 = 'ERREUR';
  202.         IF (TVA>0) THEN DEBIT=TVA; ELSE CREDIT=-TVA;
  203.         SUSPEND;
  204.         END
  205.       END /* dΘtail*/
  206.     END /* tva <>0 */
  207.   /*
  208.   * LIGNE 3
  209.   * (LIGNES DE FACTURE HT)
  210.   */
  211.   NOLIGNE=3;
  212.   INFO1 = '';
  213.   INFO2 = '';
  214.   LIBELLE = '';
  215.   FOR SELECT LIBELLE,l.PRIX*l.QUANTITE*((100-(L.REMISE+:REDUC))/100) AS TOT,L.TVA,
  216.       R.CPTACHAT,R.CPTIMPORT
  217.       FROM LIGNES L
  218.       LEFT JOIN ARTICLES A ON A.INDX=L.INDEXARTICLE
  219.       LEFT JOIN DESIGNATIONS D ON D.INDXART=L.INDEXARTICLE AND D.CODELANGUE=1
  220.       LEFT JOIN RAYONS R ON R.PKEY=A.PKEYR
  221.       WHERE L.INDEXPIECE=:INDX AND PRIX<>0 AND QUANTITE<>0
  222.       ORDER BY 2 DESC
  223.       INTO :BLOBLIGNE,:M1,:TAUXTVA,:INFO1,:ST DO IF (HT<>0) THEN
  224.     BEGIN
  225.     CREDIT=NULL;
  226.     DEBIT=NULL;
  227.     IF (TAUXTVA=0) THEN INFO1 = ST; /* utiliser compte import au lieu de compte achat */
  228.     IF ((DETAIL_HT=0) OR (ABS(HT-M1)<0.03)) THEN M1 = HT; /* si pas de dΘtail: prendre seulement 1 compte */
  229.     HT = HT - M1;
  230.     IF (M1>0) THEN DEBIT=M1; ELSE CREDIT=-M1;
  231.     SUSPEND;
  232.     END
  233.   BLOBLIGNE = NULL;
  234.   IF (HT<>0) THEN
  235.     /* ProblΦme d'arrondi */
  236.     BEGIN
  237.     CREDIT=NULL;
  238.     DEBIT=NULL;
  239.     LIBELLE = 'Ecart sur calcul HT par lignes';
  240.     INFO2 = 'ERREUR';
  241.     IF (HT>0) THEN DEBIT=HT; ELSE CREDIT=-HT;
  242.     SUSPEND;
  243.     END
  244.   END
  245. END
  246.  ;
  247.  
  248.  
  249. CREATE PROCEDURE "INTERROGATION_PONTV"
  250. (
  251.   "DATEDEB" DATE,
  252.   "DATEFIN" DATE,
  253.   "DETAIL_VERSEMENTS" SMALLINT,
  254.   "DETAIL_TVA" SMALLINT,
  255.   "DETAIL_TVA_PORT" SMALLINT,
  256.   "DETAIL_HT" SMALLINT
  257. )
  258. RETURNS
  259. (
  260.   "DATEPIECE" TIMESTAMP,
  261.   "NOPIECE" VARCHAR(15),
  262.   "NOLIGNE" SMALLINT,
  263.   "INFO1" VARCHAR(15),
  264.   "INFO2" VARCHAR(15),
  265.   "LIBELLE" VARCHAR(85),
  266.   "DEBIT" DECIMAL(12, 2),
  267.   "CREDIT" DECIMAL(12, 2),
  268.   "ESTPAYE" CHAR(1),
  269.   "ESTESP" CHAR(1),
  270.   "INDX" INTEGER,
  271.   "BLOBLIGNE" BLOB SUB_TYPE 1 SEGMENT SIZE 80
  272. )
  273. AS
  274. DECLARE VARIABLE TTC DECIMAL(12,2);
  275. DECLARE VARIABLE M1 DECIMAL(15,2);
  276. DECLARE VARIABLE TVA DECIMAL(12,2);
  277. DECLARE VARIABLE HT DECIMAL(12,2);
  278. DECLARE VARIABLE NOTIERS INTEGER;
  279. DECLARE VARIABLE ST VARCHAR(200);
  280. DECLARE VARIABLE TYPEPIECE VARCHAR(35);
  281. DECLARE VARIABLE TYPEVERS VARCHAR(35);
  282. DECLARE VARIABLE TAUX DECIMAL(6,2);
  283. DECLARE VARIABLE TAUXTVA INTEGER;
  284. DECLARE VARIABLE TVAPORT INTEGER;
  285. DECLARE VARIABLE PORT DECIMAL(12,2);
  286. DECLARE VARIABLE I INTEGER;
  287. DECLARE VARIABLE REDUC DECIMAL(5,2);
  288. BEGIN
  289. FOR SELECT P.INDX,P.DATEPIECE,P.NOPIECE,P.TOTALTVA,P.TOTALTTC,P.NOTIERS,P.TVAPORT,
  290.     P.PORT,P.PCREDUC+P.PCESCOMPTE,
  291.     T.COMPTGENE,T.COMPTAUXI,C.DESIGNATION
  292.     FROM PIECES P
  293.     LEFT JOIN CLIENTS T ON T.INDX=P.NOTIERS
  294.     LEFT JOIN CHAINES C on (c.TYPEC=0) AND (c.LIGNE=p.TYPEPIECE) AND (C.COLONNE=0)
  295.     WHERE P.TOTALTTC<>0 AND P.DATEPONT IS NULL AND P.DATEPIECE>=:DATEDEB
  296.     AND P.DATEPIECE<:DATEFIN AND z<>0
  297.     ORDER BY P.DATEPIECE
  298.     INTO :INDX,:DATEPIECE,:NOPIECE,:TVA,:TTC,:NOTIERS,:TVAPORT,:PORT,:REDUC,
  299.     :INFO1,:INFO2,:TYPEPIECE DO
  300.   BEGIN
  301.   HT = TTC - TVA;
  302.   NOLIGNE=1;
  303.   IF (INFO1 IS NULL OR INFO1='') THEN INFO1='411000';
  304.   SELECT SUM(MONTANT) FROM VERSEMENTS WHERE INDEXPIECE=:INDX INTO :M1;
  305.   IF (TTC=M1) THEN ESTPAYE = 'O'; ELSE ESTPAYE = 'N';
  306.   SELECT SUM(MONTANT) FROM VERSEMENTS WHERE INDEXPIECE=:INDX AND TYPEV=0 INTO :M1;
  307.   IF (TTC=M1) THEN ESTESP = 'O'; ELSE ESTESP = 'N';
  308.   IF (NOTIERS>0) THEN SELECT AVALUE FROM GET_NOM_CLIENT(:NOTIERS) INTO :ST;
  309.                  ELSE ST = 'N░ ' || NOPIECE;
  310.   /* LIGNE 1 (Montant TTC) */
  311.   IF (DETAIL_VERSEMENTS<>0) THEN
  312.     BEGIN
  313.     /* DΘtailler les versements */
  314.     FOR SELECT C.DESIGNATION,V.MONTANT FROM VERSEMENTS V
  315.         LEFT JOIN CHAINES C on (c.TYPEC=22) AND (c.LIGNE=V.TYPEV) AND (C.COLONNE=0)
  316.         WHERE V.INDEXPIECE=:INDX AND V.MONTANT<>0
  317.         ORDER BY V.DATEV
  318.         INTO :TYPEVERS,:M1 DO
  319.       BEGIN
  320.       TTC = TTC-M1;
  321.       CREDIT=NULL;
  322.       DEBIT=NULL;
  323.       IF (M1>0) THEN DEBIT=M1; ELSE CREDIT=-M1;
  324.       LIBELLE = TYPEVERS || ' ' || TYPEPIECE || ' ' || ST;
  325.       SUSPEND;
  326.       END
  327.     END
  328.   CREDIT=NULL;
  329.   DEBIT=NULL;
  330.   IF(TTC<>0) THEN
  331.     BEGIN
  332.     LIBELLE = TYPEPIECE || ' ' || ST;
  333.     IF (TTC>0) THEN DEBIT=TTC; ELSE CREDIT=-TTC;
  334.     SUSPEND;
  335.     END
  336.  
  337.   /*
  338.   * LIGNE 2
  339.   * (TVA)
  340.   */
  341.   NOLIGNE=2;
  342.   INFO1 = '445660';
  343.   INFO2 = '';
  344.   IF (TVA<>0) THEN
  345.     BEGIN
  346.     /* Faire d'abord le port */
  347.     IF (DETAIL_TVA_PORT=1 AND PORT<>0) THEN
  348.       BEGIN
  349.       LIBELLE = 'TVA ' || CAST(CAST(TVAPORT AS DECIMAL(6,2)) / 100 AS VARCHAR(8)) || '%';
  350.       M1 = (PORT * TVAPORT /10000);
  351.       TVA = TVA - M1;
  352.       IF (M1<0) THEN DEBIT=-M1; ELSE CREDIT=M1;
  353.       INFO2 = 'PORT';
  354.       SUSPEND;
  355.       END
  356.     /* DΘtailler TVA avec un seul taux revient α ne pas dΘtailler la TVA */
  357.     I=0;
  358.     FOR SELECT DISTINCT TVA FROM LIGNES L
  359.       WHERE INDEXPIECE=:INDX AND TVA<>0 INTO :TAUXTVA DO I = I + 1;
  360.     /* Ensuite le cas simple */
  361.     IF ((DETAIL_TVA=0) or (i=1) ) THEN
  362.       BEGIN
  363.       /* Ne pas dΘtailler plusieurs taux
  364.       /* vΘrifier si un seul taux dans la piΦce
  365.       ce qui permet de faire un libellΘ prΘcis */
  366.       if (I=1) then LIBELLE = 'TVA ' || CAST(CAST(TAUXTVA AS DECIMAL(6,2)) / 100 AS VARCHAR(8)) || '%';
  367.       ELSE LIBELLE = 'TVA';
  368.       CREDIT=NULL;
  369.       DEBIT=NULL;
  370.       IF (TVA<0) THEN DEBIT=-TVA; ELSE CREDIT=TVA;
  371.       INFO2 = '';
  372.       SUSPEND;
  373.       END /* IF */
  374.     ELSE
  375.       BEGIN
  376.       /* Cas compliquΘ: Calculer ligne par ligne.... */
  377.       FOR SELECT TVA,SUM(l.PRIX*l.QUANTITE*((100-(L.REMISE+:REDUC))/100)*TVA/10000) FROM LIGNES L
  378.           WHERE INDEXPIECE=:INDX AND TVA<>0
  379.           GROUP BY TVA INTO :TAUXTVA,:M1 DO
  380.         BEGIN
  381.         CREDIT=NULL;
  382.         DEBIT=NULL;
  383.         IF (ABS(TVA-M1)<0.03) THEN M1=TVA;
  384.         LIBELLE = 'TVA ' || CAST(CAST(TAUXTVA AS DECIMAL(6,2)) / 100 AS VARCHAR(8)) || '%';
  385.         TVA = TVA - M1;
  386.         IF (M1<0) THEN DEBIT=-M1; ELSE CREDIT=M1;
  387.         INFO2 = TAUXTVA;
  388.         SUSPEND;
  389.         END
  390.         /* Le reste de la TVA */
  391.       IF (TVA<>0) THEN
  392.         /* ProblΦme d'arrondi */
  393.         BEGIN
  394.         CREDIT=NULL;
  395.         DEBIT=NULL;
  396.         LIBELLE = 'Ecart sur calcul TVA par lignes';
  397.         INFO2 = 'ERREUR';
  398.         IF (TVA<0) THEN DEBIT=-TVA; ELSE CREDIT=TVA;
  399.         SUSPEND;
  400.         END                
  401.       END /* dΘtail*/
  402.     END /* tva <>0 */
  403.   /*
  404.   * LIGNE 3
  405.   * (LIGNES DE FACTURE HT)
  406.   */
  407.   NOLIGNE=3;
  408.   INFO1 = '';
  409.   INFO2 = '';
  410.   LIBELLE = '';
  411.   FOR SELECT L.LIBELLE,l.PRIX*l.QUANTITE*((100-(L.REMISE+:REDUC))/100) AS TOT,L.TVA,
  412.       R.CPTVENTE,R.CPTEXPORT
  413.       FROM LIGNES L
  414.       LEFT JOIN ARTICLES A ON A.INDX=L.INDEXARTICLE
  415.       LEFT JOIN DESIGNATIONS D ON D.INDXART=L.INDEXARTICLE AND D.CODELANGUE=1
  416.       LEFT JOIN RAYONS R ON R.PKEY=A.PKEYR
  417.       WHERE L.INDEXPIECE=:INDX AND PRIX<>0 AND QUANTITE<>0
  418.       ORDER BY 2 DESC
  419.       INTO :BLOBLIGNE,:M1,:TAUXTVA,:INFO1,:ST DO IF (HT<>0) THEN
  420.     BEGIN
  421.     CREDIT=NULL;
  422.     DEBIT=NULL;
  423.     IF (TAUXTVA=0) THEN INFO1 = ST; /* utiliser compte import au lieu de compte achat */
  424.     IF ((DETAIL_HT=0) OR (ABS(HT-M1)<0.03)) THEN M1 = HT; /* si pas de dΘtail: prendre seulement 1 compte */
  425.     HT = HT - M1;
  426.     IF (M1<0) THEN DEBIT=-M1; ELSE CREDIT=M1;
  427.     SUSPEND;
  428.     END
  429.   BLOBLIGNE = NULL;
  430.   IF (HT<>0) THEN
  431.     /* ProblΦme d'arrondi */
  432.     BEGIN
  433.     CREDIT=NULL;
  434.     DEBIT=NULL;
  435.     LIBELLE = 'Ecart sur calcul HT par lignes';
  436.     INFO2 = 'ERREUR';
  437.     IF (HT<0) THEN DEBIT=-HT; ELSE CREDIT=HT;
  438.     SUSPEND;
  439.     END
  440.   END
  441. END
  442.  ;
  443.  
  444.